# -*- coding: utf-8 -*-

#
# 513050-MA250
#

#%%
import akshare as ak
import matplotlib
import matplotlib.pyplot as plt
import pandas as pd
import os
from matplotlib import font_manager

# 解决负号显示为方块的问题
matplotlib.rcParams['axes.unicode_minus'] = False

# 中文字体（根据系统字体调整路径）
# font_path = 'SimHei.ttf'
font_path = 'C:\Windows\Fonts\msyh.ttc' # 微软雅黑 常规
font = font_manager.FontProperties(fname=font_path, size=14)

# test
# plt.plot([-1, 2, 3], [-1, 4, 9])
# plt.title('中文标题==zhong wen biao ti', fontproperties=font)
# plt.xlabel('时间==shi jian', fontproperties=font)
# plt.ylabel('速度==su du', fontproperties=font)
# plt.show()

#%%
# 字体使用上面设置好的字体变量
zhfont = font
print(zhfont.get_name())

file_path = 'data/sh513050.csv'
if os.path.exists(file_path) and True:
    etf_data = pd.read_csv(file_path)
else:
    etf_data = ak.stock_zh_a_hist_tx(symbol='sh513050', start_date="20190101", end_date="20250223", adjust="qfq")
    etf_data.to_csv(file_path, encoding='utf-8')

# 将日期列转换为datetime格式并设置为索引
etf_data['date'] = pd.to_datetime(etf_data['date'])
etf_data.set_index('date', inplace=True)

# 计算250日移动平均线
etf_data['ma250'] = etf_data['close'].rolling(window=250).mean()
etf_data['+20%'] = etf_data['ma250'] * 1.2
etf_data['-10%'] = etf_data['ma250'] * 0.9

# 绘制收盘价和移动平均线
plt.figure(figsize=(14, 7))
plt.plot(etf_data.index, etf_data['close'], label='Close Price', color='blue')
plt.plot(etf_data.index, etf_data['ma250'], label='250-Day MA', color='yellow')
plt.plot(etf_data.index, etf_data['+20%'], label='MA+20%', color='red')
plt.plot(etf_data.index, etf_data['-10%'], label='MA-10%', color='green')

plt.title('中概互联ETF收盘价与250日移动平均线',fontproperties=font)
plt.xlabel('日期',fontproperties=font)
plt.ylabel('价格',fontproperties=font)
plt.legend()
plt.grid()
plt.show()

# %%
